1. Field of the Invention
The present invention is generally directed to receiving and processing segmented data streams sent from a host to a printing device. More particularly, the invention relates to transmitting, receiving and processing multiple data streams from a host to a color capable printer, such as an inkjet printer, with each stream containing data relating to a different color.
2. The Prior Art
Inkjet printers produce printed items by printing horizontal components called swaths. Swaths may be further divided into vertical segments called slices, each slice being a vertical bar of single dots. A swath is produced by one or more printheads. Printheads are typically mounted on a carriage that passes across the surface of the printing medium, allowing the printhead(s) to apply ink to the printing medium surface. The part of the printhead that applies a particular color ink is known as a colorhead.
Current inkjet printers operate using a method where host software sends a print command to the printer for a particular swath. The command contains one complete piece of data for that swath, in either compressed or uncompressed form. A command header instructs the printer as to which printhead to use, where to start printing on the page, how many slices to print, the print mode to use, and the data that is to be sent to the printhead through the application specific integrated circuit (ASIC).
This current method of printing is effective when only one printhead is used at a time, because the host software is only required to send one stream of print data to the printer. This single data stream contains data needed to produce the swath, including data for all three primary colors of ink (cyan, magenta, and yellow) that are used to produce the array of colors that appear on a printed item. However, advances in the field of inkjet printers and other printing devices have created the need for a method of efficiently sending, receiving and processing multiple streams of print data.
Next generation inkjet printing devices utilize multiple printheads during the color scan that produces each swath. For purposes of these printers, it is advantageous to split the print data into distinct streams for transmission from the host to the printer. Specifically, the data is split such that each stream contains all the print data for a particular one of the three primary colors—cyan, magenta and yellow—that are used in color printing.
Splitting the data for each primary color requires an efficient process for reassembling the data to produce the array of colors to be printed on the printing medium. Problems with reassembly arise in that each data stream may contain unequal amounts of information. For example, the printhead does not need to apply each color of ink continuously as it moves across the page. A swath may be exclusively yellow for some portion, then cyan-yellow, and then cyan-magenta. If the printheads are supplied with different amounts of data for each color of ink, the system must be able to determine at what points on the page to apply each color, otherwise the printhead may not apply each color at the correct points on the page. Padding the data streams with placeholder or dummy data to create streams of equivalent size is ineffective. Sending equal amounts of data to each printhead would force the data streams to be padded with zeroes, which would significantly increase the size of the data stream sent to the printer. The printer would then be required to house enough memory to accommodate the larger data stream size, which in turn significantly increases cost. Furthermore, padding the data streams would substantially increase the volume of data traffic across the printer port. Many printing systems utilize data compression techniques as a means of managing print data. However, if printer firmware performs the decompression of received print data, simply compressing the data before transmitting it to the printer may still require the printer to have significant memory resources. This is because the printer must buffer the compressed data during decompression and also store the decompressed data for later processing.
It is therefore desirable to manage multiple compressed data streams for each printhead in a manner such that they can be decompressed and arranged to properly print a swath while simultaneously minimizing the amount of printer memory required.